<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class LoginModel extends CI_Model{
	
	public function __construct(){
		parent::__construct();
		session_start();
		session_cache_expire(10);
	}
	
	public function logout($tipo){
		//session_start();
		session_destroy();
		if($tipo == "admin"){
			$saida = "administrador";
		}
		elseif($tipo == "professor"){
			$saida = "professor";
		}
		else {
			$saida = "aluno";
		}
		header("Location: /boletim/".$saida);
	}
	
	public function idLogado(){
		return (int) $_SESSION['logado']['id'];
	}
	
	public function testaLogado($tipo){		
		
		if(isset($_SESSION['logado']) && $_SESSION['logado']['logado'] == true && $_SESSION['logado']['tipo'] == $tipo){
			//echo "aqui";
			//exit();
			return true;
		}
		//echo "aqui 2";
		//exit();
		session_destroy();
		return false;
	}
	
	public function redirecionar($tipo){
		if($tipo == "admin"){
			$tipo = "administrador";
		}
		elseif($tipo == "professor" || $tipo == "prof"){
			$tipo = "professor";
		}
		
		header("Logado: false");
		header("Location: /boletim/login/" . $tipo);
		exit();
		
	}
	
	public function getNomeProfessor(){
		return $_SESSION['logado']['professor'];
	}
	
	public function getNomeAluno(){
		return $_SESSION['logado']['aluno'];
	}
	
	public function mudarNome($tipo, $nome){
		if($tipo == "professor"){
			$_SESSION['logado']['professor'] = $nome;
		}
		return;
	}
	
	public function logarAluno($login, $senha){
		try{
			$exec = $this->db->query("call logarAluno('".$login."', '".md5($senha)."')");
			if($exec->num_rows() > 0){
				$dados = $exec->row();
				if((int)$dados->erro == 0){
					$data = array(
							"aluno" => $dados->nome,
							"id" => (int)$dados->idAluno, //"idProfessor" => (int)$dados->idprofessor,
							"logado" => true,
							"tipo" => "aluno"
					);
					$this->db->close();
					$_SESSION['logado'] = $data;
					return 1;
				}
				elseif((int) $dados->erro == -2) {
					return -1; // Senha não confere com o login
				}
				else {
					return -2; //Usuário não encotrado
				}
			}
			$this->db->close();
			return false;
		} catch(Exception $e){
			try{
				$this->db->close();
			} catch(Exception $a){
			}
		}
		return false;
	}
	
	public function logarProfessor($login, $senha){
		try{
			$exec = $this->db->query("call logarProfessor('".$login."', '".md5($senha)."')");
			if($exec->num_rows() > 0){
				$dados = $exec->row();
				if((int)$dados->erro == 0){
					$data = array(
							"professor" => $dados->nome,
							"id" => (int)$dados->idprofessor, //"idProfessor" => (int)$dados->idprofessor,
							"logado" => true,
							"tipo" => "professor"
					);
					$this->db->close();
					$_SESSION['logado'] = $data;
					return 1;
				}
				elseif((int) $dados->erro == -2) {
					return -1; // Senha não confere com o login
				}
				else {
					return -2; //Usuário não encotrado
				}
			}
			$this->db->close();
			return false;
		} catch(Exception $e){
			try{
				$this->db->close();
			} catch(Exception $a){
			}
		}
		return false;
	}
	
	/**
	 * false = desconhecido, -2 = senha inválida, -1 = admin não encontrado, admin = admin
	 * @param unknown_type $login
	 * @param unknown_type $senha
	 * @return number|boolean|string
	 */
	public function logarAdmin($login, $senha){
		try {
			$exec = $this->db->query("call logarAdmin('".$login."', '".md5($senha)."')");
			if($exec->num_rows() > 0){
				
				foreach($exec->result_array() as $dados){
					/*echo var_dump($dados);
					exit();*/
					if($dados['erro'] == 0){
						$this->load->model("AdminModel", "admin");
						//$this->admin
						//$admin = new AdminModel();
						$this->admin->setIdAdmin($dados['idadministrador']);
						$this->admin->setLogin($dados['login']);
						$this->admin->setNome($dados['nome']);
						
						
						$data = array(
								"admin" => $this->admin,
								"id" => $this->admin->getIdAdmin(), //"idAdmin" => $this->admin->getIdAdmin(),
								"logado" => true,
								"tipo" => "admin"
						);
						$_SESSION['logado'] = $data;
						return $this->admin;
					}
					elseif((int)$dados['erro'] == -2){
						return -2; //Senha inválida
					}
					elseif((int) $dados['erro'] == -1){
						return -1; //Admin não encontrado
					}
				}
			} else {
				return false;
			}
		} catch (Exception $e){
			try{
				$this->db->close();
			} catch (Exception $a){
				
			}
			return $e->getMessage();
		}
	}
	
}
